local function isdeployable_hook(self)
    local old_IsDeployable = self.IsDeployable
    function self:IsDeployable(deployer,...)
        if deployer and deployer.prefab == 'kukude' and deployer:HasTag('io_greenfinger_ability') and string.find(self.inst.prefab, "seeds") then
            return true
        end
        return old_IsDeployable(self,deployer,...)
    end
end

AddComponentPostInit("deployable", function(self)
    isdeployable_hook(self)
end)

AddClassPostConstruct("components/inventoryitem_replica", function(self)
    isdeployable_hook(self)
end)

AddComponentPostInit("playercontroller", function(self)

    for i = 1,math.huge do
        local name, v = debug.getupvalue(self.GetActionButtonAction,i)
        if name == nil then break end
        if name == "GetPickupAction" then 
            local newfn = function(self, target, tool, ...)
                local act = v(self, target, tool, ...)
                if act == ACTIONS.INTERACT_WITH and self.inst.prefab == "kukude" and self.inst:HasTag("io_greenfinger_ability") then 
                    return ACTIONS.ACTION_KKD_IO_QUICK_TEND
                else return act
                end
            end
            debug.setupvalue(self.GetActionButtonAction, i, newfn)
            break
        end
    end
end)